Joey Hess [Mon, 27 Jan 2025 20:55:07 +0000 (16:55 -0400)]
more OsPath conversion
keyFile has a nice improvement; since a Key is a ShortByteString, it can
be converted to an OsPath without needing the copy that was done before.
Unfortunately, fileKey has to convert from a ShortByteString to a
ByteString in order to use attoparsec, and then the results get
converted back to an OsPath, so there are now 2 copies.
Maybe attoparsec will eventually get a ShortByteString API,
see https://github.com/haskell/attoparsec/issues/225
Sponsored-by: Joshua Antonishen
Joey Hess [Mon, 27 Jan 2025 19:54:24 +0000 (15:54 -0400)]
optimise literalOsPath
Taking a ShortByteString and using OverloadedStrings should avoid it
being converted from a String.
The reason there is no IsString instance for OsPath is presumably the
bad behavior of IsString for ByteString on unicode btw. But
literalOsPath won't be used with unicode in git-annex.
Sponsored-by: unqueued
Joey Hess [Mon, 27 Jan 2025 14:13:43 +0000 (10:13 -0400)]
more OsPath conversion
Joey Hess [Sat, 25 Jan 2025 15:56:35 +0000 (11:56 -0400)]
more OsPath conversion
Joey Hess [Sat, 25 Jan 2025 15:53:47 +0000 (11:53 -0400)]
OsPath conversion
Decent win in exportDirectories, since it operates on ShortByteString
end to end now without needing conversion. That made it worth
implementing an OsPath specific code path there.
And ExportLocation already being a ShortByteString is an good example of why
it's a good thing that OsPath uses that!
Sponsored-by: k0ld on Patreon
Joey Hess [Sat, 25 Jan 2025 14:57:13 +0000 (10:57 -0400)]
Merge branch 'master' into ospath
Joey Hess [Sat, 25 Jan 2025 14:57:07 +0000 (10:57 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Sat, 25 Jan 2025 14:56:54 +0000 (10:56 -0400)]
windows build fix
Joey Hess [Sat, 25 Jan 2025 14:54:51 +0000 (10:54 -0400)]
more OsPath conversion
Finally reached Annex code in this conversion.
Sponsored-by: Graham Spencer
jnkl [Sat, 25 Jan 2025 12:00:20 +0000 (12:00 +0000)]
jnkl [Sat, 25 Jan 2025 11:49:29 +0000 (11:49 +0000)]
Added a comment
Joey Hess [Fri, 24 Jan 2025 20:33:36 +0000 (16:33 -0400)]
Merge branch 'master' into ospath
Joey Hess [Fri, 24 Jan 2025 20:33:26 +0000 (16:33 -0400)]
another windows build fix
Joey Hess [Fri, 24 Jan 2025 20:31:14 +0000 (16:31 -0400)]
more OsPath conversion
Sponsored-by: Leon Schuermann
Joey Hess [Fri, 24 Jan 2025 19:13:37 +0000 (15:13 -0400)]
Merge branch 'master' into ospath
Joey Hess [Fri, 24 Jan 2025 19:13:20 +0000 (15:13 -0400)]
more windows and osx build fixes
Joey Hess [Fri, 24 Jan 2025 18:49:10 +0000 (14:49 -0400)]
more OsPath conversion
Sponsored-by: Eve
Joey Hess [Fri, 24 Jan 2025 17:46:34 +0000 (13:46 -0400)]
Merge branch 'master' into ospath
Joey Hess [Fri, 24 Jan 2025 17:46:13 +0000 (13:46 -0400)]
more windows and osx build fixes
Joey Hess [Fri, 24 Jan 2025 17:40:09 +0000 (13:40 -0400)]
more OsPath conversion
About 1/10th done with this I think.
Joey Hess [Fri, 24 Jan 2025 16:02:35 +0000 (12:02 -0400)]
Merge branch 'master' into ospath
Joey Hess [Fri, 24 Jan 2025 15:39:43 +0000 (11:39 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Fri, 24 Jan 2025 15:37:17 +0000 (11:37 -0400)]
windows and osx build fixes for recent ByteString conversion work
Joey Hess [Fri, 24 Jan 2025 15:33:50 +0000 (11:33 -0400)]
avoid build warning on windows
Joey Hess [Fri, 24 Jan 2025 15:32:26 +0000 (11:32 -0400)]
remove a few unused imports on windows
Added a comment
yarikoptic [Thu, 23 Jan 2025 21:33:26 +0000 (21:33 +0000)]
Added a comment
Joey Hess [Thu, 23 Jan 2025 20:15:00 +0000 (16:15 -0400)]
more OsPath conversion
Git.Types now uses it, as does TopFilePath, making for plenty of new
compile errors needing fixing.
Sponsored-by: Brock Spratlen
yarikoptic [Thu, 23 Jan 2025 16:12:18 +0000 (16:12 +0000)]
complaining about dead
yarikoptic [Thu, 23 Jan 2025 15:53:39 +0000 (15:53 +0000)]
Added a comment
Joey Hess [Thu, 23 Jan 2025 15:46:35 +0000 (11:46 -0400)]
continue conversion
Add Utility.OsString, with a special case for length.
Joey Hess [Thu, 23 Jan 2025 15:07:29 +0000 (11:07 -0400)]
add System.FilePath to this conversion
It seems to make sense to convert both System.Directory and
System.FilePath uses to OsPath in one go. This will generally look like
replacing RawFilePath with OsPath in type signatures, and will be driven
by the now absolutely massive pile of compile errors.
Got a few modules building in this new regime.
Sponsored-by: Jack Hill
Joey Hess [Thu, 23 Jan 2025 14:27:18 +0000 (10:27 -0400)]
update
Joey Hess [Thu, 23 Jan 2025 14:22:06 +0000 (10:22 -0400)]
start converting from System.Directory to System.OsPath
This is the start of a long road, got the first few files to compile
after this large change.
Sponsored-by: mycroft
Joey Hess [Wed, 22 Jan 2025 20:48:51 +0000 (16:48 -0400)]
response
Joey Hess [Wed, 22 Jan 2025 20:42:50 +0000 (16:42 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Wed, 22 Jan 2025 20:41:06 +0000 (16:41 -0400)]
parsePOSIXTime ByteString conversion
Some easy (though tiny) speed wins.
Sponsored-by: Luke T. Shumaker on Patreon
Joey Hess [Wed, 22 Jan 2025 20:28:29 +0000 (16:28 -0400)]
fix reversion
af3b9cbd3647ecfb3f3f6c4008dc9e64f7d42591 lost takeFileName, breaking the
test suite
Joey Hess [Wed, 22 Jan 2025 20:19:06 +0000 (16:19 -0400)]
convert from readFileStrict
This removes that function, using file-io readFile' instead.
Had to deal with newline conversion, which readFileStrict does on
Windows. In a few cases, that was pretty ugly to deal with.
Sponsored-by: Kevin Mueller
Joey Hess [Wed, 22 Jan 2025 19:32:21 +0000 (15:32 -0400)]
fix reversion
In
793ddecd4b72a5e4746b3b426d3bca400737118b, writeSshConfig was made to
writeFile a ByteString, which lost the newline conversion on Windows.
Added linesFile to fix it. This will also be useful for other writeFile
conversions.
Joey Hess [Wed, 22 Jan 2025 19:19:47 +0000 (15:19 -0400)]
convert from readFileStrict
In cases where it reads lines, which needs newline conversion on
windows.
Joey Hess [Wed, 22 Jan 2025 18:43:37 +0000 (14:43 -0400)]
convert from readFileStrict
More of these still to convert, but need to be careful of newline
translation.
Joey Hess [Wed, 22 Jan 2025 18:42:27 +0000 (14:42 -0400)]
fix reversion
793ddecd4b72a5e4746b3b426d3bca400737118b made installWrapper not do
newline conversion on windows.
Joey Hess [Wed, 22 Jan 2025 18:30:25 +0000 (14:30 -0400)]
use file-io for readFile/writeFile/appendFile on ByteStrings
These are all straightforward, and easy small performance wins.
Sponsored-by: Nicholas Golder-Manning
Joey Hess [Wed, 22 Jan 2025 17:37:26 +0000 (13:37 -0400)]
RawFilePath conversion for replaceFile
Sponsored-by: Joshua Antonishen
Joey Hess [Wed, 22 Jan 2025 17:22:51 +0000 (13:22 -0400)]
simplify replaceFile using relatedTemplate
Now that truncateFilePath and relatedTemplate have both been optimised,
may as well use them in replaceFile, rather than the custom hack it
used.
Removed the windows-specific ifdef as well, because on Windows long
filepaths no longer really a problem, since ghc and git-annex use UNC
converted paths.
replaceFile no longer checks fileNameLengthLimit. That took a syscall,
and since we have an existing file, we know filenames of its length are
supported by the filesystem. Assuming that the withOtherTmp directory is
on the same filesystem as the file replaceFile is being called on, which
I believe it is.
Sponsored-by: Leon Schuermann
Joey Hess [Wed, 22 Jan 2025 16:34:54 +0000 (12:34 -0400)]
optimize truncateFilePath
Often the filepath will be all ascii, or mostly so, and this
optimisation makes a file that has an ascii suffix of sufficient length
be roundtrip converted between String and ByteString only once, rather
than once per character.
Sponsored-by: Graham Spencer
Joey Hess [Wed, 22 Jan 2025 15:51:23 +0000 (11:51 -0400)]
optimize relatedTemplate
Joey Hess [Wed, 22 Jan 2025 15:43:45 +0000 (11:43 -0400)]
break out templateAddedLength
Joey Hess [Tue, 21 Jan 2025 21:00:37 +0000 (17:00 -0400)]
use openTempFile from file-io
And follow-on changes.
Note that relatedTemplate was changed to operate on a RawFilePath, and
so when it counts the length, it is now the number of bytes, not the
number of code points. This will just make it truncate shorter strings
in some cases, the truncation is still unicode aware.
When not building with the OsPath flag, toOsPath . fromRawFilePath and
fromRawFilePath . fromOsPath do extra conversions back and forth between
String and ByteString. That overhead could be avoided, but that's the
non-optimised build mode, so didn't bother.
Sponsored-by: unqueued
jnkl [Wed, 22 Jan 2025 07:28:13 +0000 (07:28 +0000)]
rename forum/reupload_existing_files_to_bare_repo.mdwn to forum/reuploads_existing_files_to_bare_repo.mdwn
jnkl [Wed, 22 Jan 2025 07:26:34 +0000 (07:26 +0000)]
nobodyinperson [Tue, 21 Jan 2025 18:30:50 +0000 (18:30 +0000)]
Added a comment: Exporting a synced/* branch works now! 🥳
Joey Hess [Tue, 21 Jan 2025 18:26:04 +0000 (14:26 -0400)]
add file-io to build-depends when building with OsPath flag
Partly converted code to use functions from it, though more remain
unconverted. Most of withFile and openFile now use it.
Joey Hess [Tue, 21 Jan 2025 15:59:38 +0000 (11:59 -0400)]
avoid build warning with recent ghc
foldl' is in Prelude now. Explicitly import Data.List still
for older systems and add explict Prelude import to avoid warning.
Joey Hess [Tue, 21 Jan 2025 15:57:44 +0000 (11:57 -0400)]
rename OsString to OsPath
Joey Hess [Mon, 20 Jan 2025 23:53:15 +0000 (19:53 -0400)]
clean up stack.yaml with new versions of dependencies
Joey Hess [Mon, 20 Jan 2025 18:50:08 +0000 (14:50 -0400)]
RawFilePath conversion for Utility.Directory.Stream
Joey Hess [Mon, 20 Jan 2025 22:03:26 +0000 (18:03 -0400)]
RawFilePath conversion of System.Directory
By using System.Directory.OsPath, which takes and returns OsString,
which is a ShortByteString. So, things like dirContents currently have the
overhead of copying that to a ByteString, but that should be less than
the overhead of using Strings which often in turn were converted to
RawFilePaths.
Added Utility.OsString and the OsString build flag. That flag is turned
on in the stack.yaml, and will be turned on automatically by cabal when
built with new enough libraries. The stack.yaml change is a bit ugly,
and that could be reverted for now if it causes any problems.
Note that Utility.OsString.toOsString on windows is avoiding only a
check of encoding that is documented as being unlikely to fail. I don't
think it can fail in git-annex; if it could, git-annex didn't contain
such an encoding check before, so at worst that should be a wash.
Joey Hess [Mon, 20 Jan 2025 23:10:13 +0000 (19:10 -0400)]
stop exporting Utility.SystemDirectory from Utility.Directory
Joey Hess [Mon, 20 Jan 2025 18:18:02 +0000 (14:18 -0400)]
update
Joey Hess [Mon, 20 Jan 2025 17:58:14 +0000 (13:58 -0400)]
update
Joey Hess [Mon, 20 Jan 2025 15:31:18 +0000 (11:31 -0400)]
relax annex-tracking-branch to allow "/"
Allow setting remote.foo.annex-tracking-branch to a branch name that
contains "/", as long as it's not a remote tracking branch.
Joey Hess [Mon, 20 Jan 2025 15:12:56 +0000 (11:12 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Mon, 20 Jan 2025 15:01:07 +0000 (11:01 -0400)]
Support help.autocorrect settings "never" and "immediate"
Joey Hess [Mon, 20 Jan 2025 14:56:12 +0000 (10:56 -0400)]
Support help.autocorrect=prompt
nobodyinperson [Mon, 20 Jan 2025 10:25:51 +0000 (10:25 +0000)]
Report bug that one can't export synced/ branches
Joey Hess [Fri, 17 Jan 2025 15:11:55 +0000 (11:11 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
hello@da0030bba070302e85904b4d73db61fb4af7bced [Fri, 17 Jan 2025 11:14:55 +0000 (11:14 +0000)]
Added a comment: Feature idea
hello@da0030bba070302e85904b4d73db61fb4af7bced [Fri, 17 Jan 2025 11:11:51 +0000 (11:11 +0000)]
goglu6 [Fri, 17 Jan 2025 06:30:22 +0000 (06:30 +0000)]
goglu6 [Fri, 17 Jan 2025 06:29:39 +0000 (06:29 +0000)]
goglu6 [Fri, 17 Jan 2025 06:24:07 +0000 (06:24 +0000)]
goglu6 [Fri, 17 Jan 2025 06:23:41 +0000 (06:23 +0000)]
goglu6 [Fri, 17 Jan 2025 05:13:55 +0000 (05:13 +0000)]
goglu6 [Fri, 17 Jan 2025 05:12:14 +0000 (05:12 +0000)]
hello@da0030bba070302e85904b4d73db61fb4af7bced [Thu, 16 Jan 2025 18:17:52 +0000 (18:17 +0000)]
Added a comment: Still happening, managed to get a reproduction (maybe ?)
Joey Hess [Wed, 15 Jan 2025 23:13:15 +0000 (19:13 -0400)]
comment
Joey Hess [Wed, 15 Jan 2025 16:38:35 +0000 (12:38 -0400)]
add news item for git-annex 10.
20250115
Joey Hess [Wed, 15 Jan 2025 16:38:25 +0000 (12:38 -0400)]
releasing package git-annex version 10.
20250115
Joey Hess [Wed, 15 Jan 2025 16:18:11 +0000 (12:18 -0400)]
arm autobuild moved to sparrow
Joey Hess [Wed, 15 Jan 2025 15:39:40 +0000 (11:39 -0400)]
preparing release
Joey Hess [Wed, 15 Jan 2025 15:16:46 +0000 (11:16 -0400)]
rsync security fix for bundled builds
I have updated all linux builds.
Joey Hess [Mon, 13 Jan 2025 18:24:28 +0000 (14:24 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Mon, 13 Jan 2025 18:22:49 +0000 (14:22 -0400)]
pre-init config and hook
Added annex.pre-init-command git config and pre-init-annex hook that is run
before git-annex repository initialization.
This can block initialization. Or it can preform pre-initialization
configuration or tweaking.
I left stdio connected while it's running, so it could also be used for
interactive prompting conceivably, although that would want to use /dev/tty
anyway probably in order to not pollute the stdout of a command when
automatic initialization is done.
Sponsored-by: Dartmouth College's OpenNeuro project
lemondata [Mon, 13 Jan 2025 17:43:25 +0000 (17:43 +0000)]
Added a comment
Joey Hess [Mon, 13 Jan 2025 17:32:46 +0000 (13:32 -0400)]
comment
Joey Hess [Mon, 13 Jan 2025 17:26:36 +0000 (13:26 -0400)]
update
Joey Hess [Mon, 13 Jan 2025 17:14:54 +0000 (13:14 -0400)]
comment
Joey Hess [Mon, 13 Jan 2025 17:14:12 +0000 (13:14 -0400)]
document files
Joey Hess [Mon, 13 Jan 2025 17:11:49 +0000 (13:11 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Mon, 13 Jan 2025 17:04:38 +0000 (13:04 -0400)]
todo
kind of a bug, but I'm not sure if it can be fixed
Joey Hess [Sun, 12 Jan 2025 16:22:02 +0000 (12:22 -0400)]
update
yarikoptic [Fri, 10 Jan 2025 20:27:49 +0000 (20:27 +0000)]
Added a comment
Joey Hess [Fri, 10 Jan 2025 18:55:00 +0000 (14:55 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Fri, 10 Jan 2025 18:50:49 +0000 (14:50 -0400)]
added hooks corresponding to annex.*-command
* Added freezecontent-annex and thawcontent-annex hooks that
correspond to the git configs annex.freezecontent and
annex.thawcontent.
* Added secure-erase-annex hook that corresponds to the git config
annex.secure-erase-command.
* Added commitmessage-annex hook that corresponds to the git config
annex.commitmessage-command.
* Added http-headers-annex hook that corresponds to the git config
annex.http-headers-command.
that correspond to the post-update-annex and pre-commit-annex hooks.
The use case for these is eg, setting up a git repository that is run in a
container, where the easiest way to provide a script is by putting it in
.git/hooks/, rather than copying it into the container in a way that puts
it in PATH.
This is all the ones that make sense to add for annex.*-config git configs.
annex.youtube-dl-command is not a hook, it's telling git-annex what command
to run. So is annex.shared-sop-command. So omitted those.
May later also want to add hooks corresponding to
`remote.<name>.annex-cost-command` etc.
Sponsored-by: the NIH-funded NICEMAN (ReproNim TR&D3) project
yarikoptic [Fri, 10 Jan 2025 17:33:15 +0000 (17:33 +0000)]
Added a comment: on the init hook
Joey Hess [Fri, 10 Jan 2025 17:27:51 +0000 (13:27 -0400)]
configs annex.post-update-command and annex.pre-commit-command
Added git configs annex.post-update-command and annex.pre-commit-command
that correspond to the git-annex hook scripts post-update-annex and
pre-commit-annex.
Note that the hook files take precience over the git config, since the git
config can includ global config which should be overridden by local config.
These new git configs are probably not super useful. Especially the
pre-commit-annex hook is there to install scripts to instead of the
pre-commit hook, since git-annex installs that hook itself. So why would
someone want to use a git config for that? Only reason I can think of would
be in a global git config. Or possibly because it's easier to set a git
config than write a hook script, on an OS like Windows.
The real reason I'm adding these is as groundwork for making other
annex.*-command git configs also be available as hook scripts. I want
to avoid having some things available as only git hooks and others as
both gitconfigs and git hooks. (It seems that some annex.*-command configs
don't translate to git hooks though.)
In the man page, moved documentation of the hooks to be next to the
documentation of the git configs. This is to avoid repitition.
yarikoptic [Fri, 10 Jan 2025 17:27:23 +0000 (17:27 +0000)]
allocate this development to openneuro - we need to curate/process datasets from/for openneuro on discovery
Joey Hess [Fri, 10 Jan 2025 16:49:11 +0000 (12:49 -0400)]
comment